<div id="curr_polygons"></div>
<div id="selected_areas"></div>
<div id="YMapsSEARCH" style="width:600px;height:700px"></div>
<div id="con7" style="position:absolute;z-index:10000"></div>
<script type="text/javascript">
var scale_map = 11;
</script>




<script type="text/javascript">
	YMaps.jQuery(function() {
		// создаём карту там, где находится пользователь
		// определяем местоположение пользователя, вычисленное на основе его IP адреса
		var loc = YMaps.location;
		//center = new YMaps.GeoPoint(loc.longitude, loc.latitude);
		center = new YMaps.GeoPoint(37.609218, 55.753559);
		
		center_map = center;
		// Создает карту в указанном HTML-контейнере.
		var map = new YMaps.Map(document.getElementById("YMapsSEARCH"));
		
		
		map.setCenter(center, 11);
		
		// Включает возможность плавного масштабирования карты колесом мыши (по умолчанию выключена).
		map.enableScrollZoom();

		draw = false;

        // YMaps.GeoObjectCollection(style)     Объект для хранения групп меток карты или других объектов GeoObjectCollection.
		poligon_Collection = new YMaps.GeoObjectCollection();
		
		
		// Добавляет оверлей на карту.
		map.addOverlay(poligon_Collection);
		
		
		// полигон
		var polygons = [];
		var polyCounter = 0;


        // Содержит набор данных, определяющий внешний вид объектов, помещаемых на карту. 
		var s = new YMaps.Style();
		
		// Создает объект стиля значка (с тенью или без нее).  http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/iconstyle.xml
		s.iconStyle = new YMaps.IconStyle();
		
		// YMaps.Point(x, y)  Создает объект точки в двумерном эвклидовом пространстве.  http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/point.xml
		s.iconStyle.offset = new YMaps.Point(-6, -6);
		s.iconStyle.href = 'http://yroom.ru/images/cross.png';
		s.iconStyle.size = new YMaps.Point(12, 12);
		YMaps.Styles.add('sdot', s);

		var s = new YMaps.Style();
		s.lineStyle = new YMaps.LineStyle();
		s.lineStyle.strokeColor = "ff0000ff";
		s.lineStyle.strokeWidth = "3";
		YMaps.Styles.add("example#CustomLine", s);

		var s = new YMaps.Style();
		s.lineStyle = new YMaps.LineStyle();
		s.lineStyle.strokeColor = "ff0000ff";
		s.lineStyle.strokeWidth = "2";
		YMaps.Styles.add("example#CustomLine1", s);




		placemark = new YMaps.Placemark(new YMaps.GeoPoint(55, 55), {
			style : 'sdot',
			hasHint : false
		});
		poligon_Collection.add(placemark);




 
		YMaps.Events.observe(map, map.Events.Click, function(map, mEvent) {
			if(draw == true) {
				lastp = mEvent.getGeoPoint();

				placemark = new YMaps.Placemark(mEvent.getGeoPoint(), {
					style : 'sdot',
					hasBalloon : false
				});
				placemark.id = n;

				poligon_Collection.add(placemark);
				pl.addPoint(mEvent.getGeoPoint());
				YMaps.Events.observe(placemark, placemark.Events.Click, function() {

					if(this.id == 0 || this.id == n - 1) {
						dff1();
					}

				});
				n += 1;

			}
		});

		YMaps.Events.observe(map, map.Events.MouseMove, function(map, mEvent) {

			if(draw == true && n == 0) {
				var m = map.converter.coordinatesToLocalPixels(mEvent.getGeoPoint()).toString().split(',');
				showhint(m[0], m[1]);
				document.getElementById('con7').innerHTML = 'Кликните на карту, что бы поставить первую точку точку ';
			}

			if(draw == true && n > 0) {

				if(n < 3) {
					var m = map.converter.coordinatesToLocalPixels(mEvent.getGeoPoint()).toString().split(',');
					showhint(m[0], m[1]);
					document.getElementById('con7').innerHTML = 'Продолжайте ставить точки';
				} else {
					var m = map.converter.coordinatesToLocalPixels(mEvent.getGeoPoint()).toString().split(',');
					showhint(m[0], m[1]);
					document.getElementById('con7').innerHTML = 'Замкните область, чтобы закончить выделение,нажав на первую или последнюю точку';
				}

				map.removeOverlay(p2);

				p2 = new YMaps.Polyline([], {
					style : 'example#CustomLine',
					hasBalloon : false
				});
				var m = mEvent.getGeoPoint().toString().split(',');

				p2.addPoint(lastp);
				koofw = 0.006 / 2 / Math.pow(2, map.getZoom() - 11);
				p2.addPoint(new YMaps.GeoPoint(m[0], m[1]));
				map.addOverlay(p2);

				YMaps.Events.observe(p2, p2.Events.Click, function(p2, mEvent) {

					if(draw == true) {
						lastp = mEvent.getGeoPoint();

						placemark = new YMaps.Placemark(mEvent.getGeoPoint(), {
							style : 'sdot',
							hasBalloon : false
						});
						placemark.id = n;

						poligon_Collection.add(placemark);
						pl.addPoint(mEvent.getGeoPoint());
						YMaps.Events.observe(placemark, placemark.Events.Click, function() {

							if(this.id == 0 || this.id == n - 1) {
								dff1();
							}

						});
						n += 1;

					}

				});

			}
		});

		// Создание кнопки
		var button = new YMaps.ToolBarRadioButton(YMaps.ToolBar.DEFAULT_GROUP, {
			icon : "http://yroom.ru/images/icon_zoom.png",
			caption : "задать область для поиска",
			hint : "задать на карте область для поиска"
		}, {
			selected : false
		});

		// Создание кнопки
		var search_button = new YMaps.ToolBarRadioButton(YMaps.ToolBar.DEFAULT_GROUP, {
			icon : "http://yroom.ru/images/search.png",
			caption : "искать",
			hint : "показать найденные объекты"
		}, {
			selected : false
		});

		var toolbar = new YMaps.ToolBar(button);
		//toolbar.add(search_button);

		// Добавление панели инструментов на картуs
		map.addControl(toolbar);

		//map.addControl(new YMaps.TypeControl());
		map.addControl(new YMaps.Zoom());
		//map.addControl(new YMaps.SmallZoom());
		//map.addControl(new YMaps.SearchControl());

		// Создание стиля для многоугольника
		var style = new YMaps.Style("default#greenPoint");
		style.polygonStyle = new YMaps.PolygonStyle();
		style.polygonStyle.fill = 1;
		style.polygonStyle.outline = 1;
		style.polygonStyle.strokeWidth = 1;
		style.polygonStyle.strokeColor = "ff0000ff";
		style.polygonStyle.fillColor = "ff000055";

		style.polygonStyle.hasHint = 1;
		style.polygonStyle.hasBalloon = 0;

		YMaps.Styles.add("polygon#Example", style);

		// массив созданных плигонов
		var polygons = [];
		var polyCounter = 0;

		// кнопка включения полигона
		YMaps.Events.observe(button, button.Events.Click, function() {

			map.addCursor(YMaps.Cursor.CROSSHAIR);

			poligon_Collection.removeAll();
			polys = '';
			n = 0;
			pl = new YMaps.Polyline([], {
				style : 'example#CustomLine1'
			});
			map.addOverlay(pl);

			p2 = new YMaps.Polyline([]);
			map.addOverlay(p2);
			draw = true;

		});
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

		function dff1() {

			YMaps.jQuery('#con7').hide();
                // считаем, сколько ломаных вершин на карте Возвращает количество вершин в ломаной линии.
			for(var i = 0; i < pl.getNumPoints(); i++) {
			    // Возвращает координаты вершины по ее индексу.
				polys += pl.getPoint(i).toString() + ' ';
			}

			var polygon1 = new YMaps.Polygon([], {
			    // Возможность открытия балуна объекта по щелчку мыши. 
				hasBalloon : 1
			});
			polygon1.setEditingOptions({
				drawing : true,
				maxPoints : 200
			});

			var arr = polys.split(' ');
			for(var i = 0; i < arr.length - 1; i++) {
				var p = arr[i].split(',');
				polygon1.addPoint(new YMaps.GeoPoint(p[0] * 1, p[1] * 1));
			}
			map.removeOverlay(pl);
			map.removeOverlay(p2);
			poligon_Collection.removeAll();
			map.addCursor(YMaps.Cursor.POINTER);
			//map.addOverlay(polygon1);
			// polygon1.startEditing();
			draw = false;

			polygons[polyCounter] = new YMaps.Polygon([], {
				style : "polygon#Example",
				hasHint : 1,
				hasBalloon : 0
			});

			var polygon = polygons[polyCounter];
			polygon.name = "<span style='font-size:12px'><b>одинарный клик</b> - вкл./выкл. рисования<br><b>двойной клик</b> - удаление нарисованной области</span>";
			polygon.description = polyCounter;

			// Установка параметров режима редактирования - максимум - 200 точек
			// Устанавливает опции режима редактирования ломаной линии.
			polygon.setEditingOptions({
				drawing : true,
				maxPoints : 200
			});

			var arr = polys.split(' ');
			for(var i = 0; i < arr.length - 1; i++) {
				var p = arr[i].split(',');
				polygon.addPoint(new YMaps.GeoPoint(p[0] * 1, p[1] * 1));
			}

			// добавляем на карту
			map.addOverlay(polygon);
			// начинаем редактирование
			polygon.startEditing();




			// удаляем полигон
			var remPolygonListener = YMaps.Events.observe(polygon, polygon.Events.DblClick, function(polygon, mEvent) {
				delete polygons[polygon.description];
				map.removeOverlay(polygon);
				YMaps.jQuery("#in_polygon_" + polygon.description).remove();
			}, this);






			// записываем изменения полигона
			var remPolygonListener = YMaps.Events.observe(polygon, polygon.Events.PositionChange, function(polygon, mEvent) {

				if(polygon.getNumPoints() > 2) {
					curr_polygon = 'in_polygon_' + polygon.description;
					if(YMaps.jQuery("#curr_polygons").children().is('#' + curr_polygon))
						YMaps.jQuery('#' + curr_polygon).attr('value', polygon.getPoints().toString());
					else
						YMaps.jQuery("#curr_polygons").append('<input id="' + curr_polygon + '" name="in_polygon[' + polygon.description + ']" type="hidden" value="' + polygon.getPoints().toString() + '">');
				}
			}, this);





			// выключаем редактирование полигона по одинарному щелчку
			
			// YMaps.Events.observe Дает возможность добавлять обработчики событий к объектам JavaScript API.
			// http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/events.xml 
			var remPolygonListener = YMaps.Events.observe(polygon, polygon.Events.Click, function(polygon, mEvent) {
				if(polygon.isEditing()) {
					
					// http://api.yandex.ru/maps/doc/jsapi/1.x/ref/reference/polyline.xml
					polygon.stopEditing();
					button.deselect();
				} else {
					// создаём ломанную линию
					polygon.startEditing();
					button.select();
				}
			}, this);

			polyCounter++;
		}























<?php









	/*
     * 
     * 
     * 
     * 37.66645,55.781211,37.65409,55.725836,37.533241,55.778889



		// отправляем нарисованные полигоны на сервер
		YMaps.Events.observe(search_button, search_button.Events.Click, function () {

		if(window.curr_ml) map.removeOverlay(window.curr_ml);

		if(polygons.length == 0){
		alert("Нет ни одной области для отправки!");
		}else{
		var pointsArray = [];
		var counter = 0;
		var in_polygon_str ='';
		for(var polyItemNum in polygons){
		var polyItem = polygons[polyItemNum];
		var currentCoord = polyItem.getPoints();

		if(polyItem.getNumPoints()>2){
		pointsArray.push(currentCoord.toString());
		in_polygon_str= in_polygon_str + "&in_polygon[" + counter +"]=" + currentCoord.toString();
		}
		counter++;
		}
		sData = {
		query : 'getResult',
		'points[]' : pointsArray
		};

		window.open("http://www.cian.ru/cat.php?deal_type=1" +in_polygon_str);

		}
		});
		 

		//YMaps.jQuery('vb').show();
*/ ?>
		function gecenter(s) {
			var minx = 10000;
			var miny = 10000;

			var arr = s.split(',');
			for(var i = 0; i < arr.length; i = i + 2) {

				if((arr[i] * 1) < minx) {
					minx = arr[i] * 1;
				};
				if((arr[i + 1] * 1) < miny) {
					miny = arr[i + 1] * 1;
				};

			}

			var maxx = -1000;
			var maxy = -1000;

			var arr = s.split(',');

			for(var i = 0; i < arr.length; i = i + 2) {

				if((arr[i] * 1) > maxx) {
					maxx = arr[i] * 1;
				};
				if((arr[i + 1] * 1) > maxy) {
					maxy = arr[i + 1] * 1;
				};
			}

			return minx + ',' + miny + '^' + maxx + ',' + maxy;

		}

		function showhint(x, y) {
			var offset = YMaps.jQuery('#YMapsSEARCH').offset();
			YMaps.jQuery('#con7').show();
			var xx = offset.left;
			var yy = offset.top;
			document.getElementById('con7').style.display = 'block';
			YMaps.jQuery('#con7').css('left', xx + (Math.round(x) + 10) + 'px');
			YMaps.jQuery('#con7').css('top', yy + (Math.round(y) - 10) + 'px');
		}

	}); 
</script>